The development of the EDVAC (Electronic Discrete Variable Automatic Computer) computer system of 1948 is often cited as the beginning of the computer era. Since that time, computer systems have evolved into extremely sophisticated devices, and computer systems may be found in many different settings. Computer systems typically include a combination of hardware, such as semiconductors and circuit boards, and software, also known as computer programs.
Years ago, computers were stand-alone devices that did not communicate with each other, but today, computers are increasingly connected in networks and one computer, called a client, may request another computer, called a server, to perform an operation. With the advent of the Internet, this client/server model is increasingly being used in online businesses and services, such as online auction houses, stock trading, banking, commerce, and information storage and retrieval.
Two current techniques for connecting clients and servers are called a Service Oriented Architecture (SOA) and Utility Computing. A service-oriented architecture includes a collection of services, which communicate with each other. A service is a function that is well-defined, self-contained, and does not depend on the context or state of other services. The communication between the services may involve either simple data passing or may involve two or more services coordinating some activity. Utility computing is a service provisioning model in which a service provider makes computing resources available to a customer as needed, and charges customers for a specific usage of the resource rather than a flat rate. Like other types of on-demand computing (such as grid computing), the utility model seeks to maximize the efficient use of resources and/or minimize associated costs. Another version of utility computing is carried out within an enterprise in a shared pool utility model. In the shared pool utility model, an enterprise centralizes its computing resources to serve a larger number of users without unnecessary redundancy.
In both the Service Oriented Architecture and Utility Computing, the client determines the server that is to receive and process a request, and the client may have multiple requests that it sends to multiple servers. Each server processes its received requests and sends responses to the client that originated the request. With this multiplicity of requests and responses comes a large amount of network traffic, which slows the performance of the network and thus increases the response time of the requests.
Hence, what is needed is a better technique for communicating requests and responses between clients and servers.